package com.train.course.service;

import com.train.course.domain.VideoCourse;
import com.train.course.dto.VideoCourseDTO;
import com.train.course.vo.VideoCourseVO;

import java.util.List;

/**
 * 课程管理 服务层接口
 */
public interface IVideoCourseService {

    /**
     * 查询课程信息
     *
     * @param courseId 课程ID
     * @return 课程信息
     */
    public VideoCourse selectVideoCourseById(Long courseId);

    /**
     * 查询课程详情（包含标签）
     *
     * @param courseId 课程ID
     * @return 课程详情VO
     */
    public VideoCourseVO selectVideoCourseDetailById(Long courseId);

    /**
     * 查询课程列表
     *
     * @param videoCourse 课程信息
     * @return 课程集合
     */
    public List<VideoCourse> selectVideoCourseList(VideoCourse videoCourse);

    /**
     * 新增课程
     *
     * @param videoCourse 课程信息
     * @return 结果
     */
    public int insertVideoCourse(VideoCourse videoCourse);

    /**
     * 新增课程（包含分类和标签）
     *
     * @param videoCourseDTO 课程信息DTO
     * @return 结果
     */
    public int insertVideoCourseWithTags(VideoCourseDTO videoCourseDTO);

    /**
     * 修改课程
     *
     * @param videoCourse 课程信息
     * @return 结果
     */
    public int updateVideoCourse(VideoCourse videoCourse);

    /**
     * 修改课程（包含分类和标签）
     *
     * @param videoCourseDTO 课程信息DTO
     * @return 结果
     */
    public int updateVideoCourseWithTags(VideoCourseDTO videoCourseDTO);

    /**
     * 删除课程信息
     *
     * @param courseId 课程ID
     * @return 结果
     */
    public int deleteVideoCourseById(Long courseId);

    /**
     * 批量删除课程信息
     *
     * @param courseIds 需要删除的课程ID数组
     * @return 结果
     */
    public int deleteVideoCourseByIds(Long[] courseIds);


}